.. :validated: 2.5.0

Суммирование политик ПО
-----------------------

Термины и определения
~~~~~~~~~~~~~~~~~~~~~

.. list-table:: Суммирование политик ПО. Термины и определения
   :widths: 20 80
   :header-rows: 1
   :class: longtable
   :name:

   * - Термин
     - Определение
   * - SaltStack
     - Система управления конфигурацией машин и инструмент дистанционного выполнения скриптов, который позволяет администраторам запускать команды на разных машинах.
   * - Salt-master
     - Центральный демон Salt, которой может отдавать команды слушающим миньонам (Salt-minion).
   * - Salt-minion
     - Сервер, на котором запущен демон Salt-minion, который может прослушивать команды от мастера (Salt-master) и выполнять запрошенные задачи.
   * - Standalone minion
     - Автономно от мастера запущенный клиент на компьютере домена. Выполняет задачи запуска заданий без подключений к мастеру и запуска локальных задач.
   * - Pillar
     - Хранилище ключ-значение для пользовательских данных, которые будут доступны миньону. Часто используется для хранения и распространения конфиденциальных данных миньонам.
   * - Приоритет политики
     - Позволяет управлять очередностью применения политик.
   * - Сервер службы каталогов
     - Сервер, хранящий и передающий важную конфиденциальную информацию, связанную с пользователями, паролями и учетными записями компьютеров.
   * - LDAP-протокол
     - Протокол прикладного уровня для доступа к службе каталогов.
   * - Фильтр политики ПО
     - Выборка определенных компьютеров и/или групп компьютеров.
   * - Портал управления
     - Графический web-интерфейс, предоставляющий привилегированному пользователю единую точку доступа к данным, управления инфраструктурой и объектами домена.
   * - Политика ПО
     - Набор правил, позволяющих устанавливать, настраивать и обновлять ПО на компьютерах.

Назначение политик ПО на подразделение
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Для работы с политиками ПО у пользователя должны быть соответствующие права. Для 2.2.0 это ALDPRO - Main Administrator и ALDPRO - IT Specialist. Начиная с версии 2.4.0 это может быть набор привилегий (подробнее см. :ref:`dmn_roles_and_access_rights`). Перед назначением политики ПО на подразделения, подготовьте программное обеспечение (см. :ref:`swiu_catalog`) и создайте политику ПО (см. :ref:`swiu_policy_creating`).

.. important::

   Политики ПО доступны для работы только клиентам с **ОС ALSE**.

Для назначения политик ПО (подробнее см. :ref:`swiu_configuring_units`) перейти: **Установка и обновление ПО → Политики ПО → {Имя политики} → Вкладка “Подразделения”**. На вкладке выбрать **+ Добавить подразделение**, на которое будет назначена политика ПО. Или сделать аналогичные действия в карточке подразделения: **Пользователи и компьютеры → Организационная структура → {Имя подразделения} → Вкладка Политики ПО**. На вкладке выбрать **[+ Назначить политику ПО]**.

Есть 2 способа назначить политику ПО:

-  На подразделение. Для этого выберите любое подразделение. В этом случае политика ПО применяется ко всем компьютерам подразделения.

-  На корневое подразделение с указанием компьютера или группы компьютеров. Для этого в выпадающем списке выберите корневое подразделение. Вам станут доступны блоки выбора компьютеров и групп компьютеров. В блоке “Все компьютеры” и/или “Все группы” укажите соответствующие компьютеры и/или группы компьютеров для применения политики ПО. Данная функция предусмотрена исключительно для корневого подразделения.

На вкладке **Установка и обновление ПО → Политики ПО → {Имя политики} → Вкладка “Подразделения”** приведен список подразделений, к которым применяется данная политика ПО, с указанием приоритета политики ПО (см. :ref:`swiu_software_policies`).

Версионность
^^^^^^^^^^^^

Каждая политика ПО имеет версию, которая автоматически изменяется, если наступило одно из следующих событий:

1. Внесены любые изменения в политику ПО. В этом случае дата изменений - это дата, когда пользователь внес изменения. А автор - это ФИО пользователя, внесшего изменения.

2. Произошло обновление системы. В этом случае дата изменений - это дата обновления системы. А автора изменений - **Системное обновление**.

3. Внесены изменения в ПО, которое есть в составе политики. В этом случае дата изменений - дата внесения изменений в конкретном ПО (изменения в каталоге ПО). А автор - это ФИО пользователя, внесшего изменения в ПО.

Описание принципов суммирования политики ПО
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Область действия политики ПО
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Область действия политики ПО определяется этапом назначения на подразделение. Это могут быть:

-  Все компьютеры в рамках выбранного подразделения, но группы компьютеров, входящие в подразделение, не учитываются. Стоит учесть, что корневое подразделение - главное подразделение домена, в которое входят все компьютеры, поэтому политики ПО, назначенные на корневое подразделение, назначаются всем компьютерам домена.

-  Определенные компьютеры и/или группы компьютеров. При назначении на группу компьютеров, политика ПО так же применяется и ко вложенным группам (см. :ref:`u+c_assigning_policy`).

.. _ref_creating_pillar_policy:

Порядок формирования pillar политик ПО
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. figure:: media/1.jpg
   :name: 1

Для получения данных политик ПО и их применения на компьютере используется pull-модель. Инициатором работы является ALD Pro Salt миньон (standalone minion), установленный на каждом компьютере домена, который по протоколу LDAP к серверу службы каталогов получает актуальные данные о конкретной политике.

-  ALD Pro Salt миньон (Standalone миньон) — это рабочие станции или серверы, на котором работает демон-миньон Salt, обладающий широкой функциональностью, работающий автономно от мастера. Используется для запуска заданий в системе без подключения к мастеру.

Формирование конфигураций политик ПО происходит по расписанию или принудительному вызову. По расписанию, применение политик ПО гарантированно происходит каждые 80 минут, но не чаще каждых 30 минут.

При первом запуске задания на формирование pillar Standalone миньон обращается к серверу службы каталогов и получает:

1. имена подразделения компьютера и его родительских подразделений;

2. все настройки и данные назначенных на них политики ПО.

Имена подразделений, идентификаторы политик ПО и их версии сохраняются в файлах ``sw-assigments.json, sw-versions.json, sw-settings.json`` в директории ``/opt/rpta/aldpro-salt/minion``. Настройки всех назначенных политик суммируются и сохраняются в ``sw-pillar.json`` той же директории. Далее политики ПО применяются.

При последующих запусках, Standalone миньон обращается к серверу службы каталогов с коротким запросом на получение:

1. имен подразделений связанных с компьютером или пользователем;

2. идентификаторов назначенных на них политик ПО;

3. версий этих политик.

Полученные данные миньон сравнивает со списками, сформированными ранее ``sw-assigments.json, sw-versions.json``. Если изменений нет, pillar остается без изменений, политики применяются. Если данные отличаются, перед применением, Standalone миньон предварительно запрашивает у
сервера службы каталогов настройки отличающихся политик ПО, которые используются для формирования нового pillar.

Порядок суммирования политик ПО
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Суммирование политик происходит согласно иерархической структуре домена, последовательно, начиная с корневого подразделения, заканчивая подразделением в котором состоит компьютер. Условно, каждое подразделение можно обозначить уровнем:

-  1 уровень - корневое подразделение...
-  N уровень - родительское подразделение компьютера.

Политики ПО 1 уровня, которые применяются к компьютеру, суммируются с политиками ПО последующего уровня. Если в политиках присутствует одинаковое ПО с разными параметрами, то применяются параметры политики с приоритетом выше (наивысший приоритет 1). Если же приоритеты одинаковые,
такое возможно если политики наследованы с разных подразделений, то для компьютера применяются параметры той политики, что является для данного компьютера ближайшей по структуре, поэтому одинаковые приоритеты для компьютера переопределяются, согласно иерархической структуре домена.

При возникновении конфликтов среди одинакового программного обеспечения после назначения политики ПО, то программное обеспечение, что по итогу не применилось в ходе суммирования, в карточке компьютера отображается со статусом “Переопределено”. Подробнее о статусах в разделе :ref:`ref_checking_policy_result`.

После суммирования, на компьютере формируется конечный pillar (см. :ref:`ref_creating_pillar_policy`), который и задаёт основную конфигурацию устанавливаемого программного обеспечения (см. :ref:`ref_pillar_result`).

Схема применения ПО
^^^^^^^^^^^^^^^^^^^

Пример работы нового функционала суммирования ПО выглядит следующим образом:

.. figure:: media/2.png
   :name: 2

Реализация данной схемы так же представлена в портале **ALD Pro**.

Пример суммирования политик ПО через портал управления
''''''''''''''''''''''''''''''''''''''''''''''''''''''

Для того, чтобы показать работу политик ПО в портале управления, приведем пример из схемы.

1. Создана следующая структура домена:

.. figure:: media/3.png
   :name: 3

2. В системе присутствуют компьютеры “host1” и “host2”.

3. Созданы группы компьютеров: “group3”, содержащая компьютер “host1”, и “group 2”. Группы взаимно вложены. “group2” добавлена в “Департамент разработки”, “group3” в “Отдел аналитики”.

4. В подразделение “Отдел аналитики” добавлен компьютер “host1”, а в “Дирекцию программного обеспечения” компьютер “host2”.

5. Созданы политики ПО, содержащие идентичное схеме программное обеспечение и параметры:

.. figure:: media/4.png
   :name: 4

6. Политики ПО назначены на подразделения согласно схеме. Перейти: Пользователи и компьютеры → Организационная структура → Дирекция программного обеспечения. Назначенные политики ПО:

.. figure:: media/5.png
   :name: 5

Перейти: Пользователи и компьютеры → Организационная структура → Департамент разработки. Назначенные политики ПО:

.. figure:: media/6.png
   :name: 6

Перейти: Пользователи и компьютеры → Организационная структура → Отдел аналитики. Назначенные политики ПО:

.. figure:: media/7.png
   :name: 7

7. Не учитывая вложенность групп и точечно назначенные политики ПО, структура будет выглядеть следующим образом:

.. figure:: media/8.png
   :name: 8

8. Перейти: **Пользователи и компьютеры → Компьютеры → host1 → Вкладка “Назначение ПО”**. Как можно увидеть, присутствует одинаковое ПО. Из него в статусе **Ожидает установки**, то программное обеспечение, что было назначено соответствующей политикой ПО на родительское подразделение компьютера, остальное отмечается как **Переопределено**:

.. figure:: media/9.png
   :name: 9

9. Перейти: **Пользователи и компьютеры → Компьютеры → host2 → Вкладка “Назначение ПО**. Назначенное ПО определено следующим образом:

.. figure:: media/10.png
   :name: 10

.. _ref_pillar_result:

Просмотр результирующего pillar
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для просмотра назначенного программного обеспечения и его параметров на компьютере домена проверьте сформированный pillar командой:

.. code-block:: 

   aldpro-salt-call pillar.get aldpro-software

Вывод команды должен соответствует назначенным ПО с итоговыми параметрами (см. :ref:`ref_checking_policy_result`).

Пользователь также может посмотреть pillar с результатами суммирования в файле ``/srv/aldpro-salt/roots/pillar/aldpro_po.sls``:

.. code-block:: bash

   sudo cat /srv/aldpro-salt/roots/pillar/aldpro_po.sls

Отладка политик ПО
~~~~~~~~~~~~~~~~~~

Для корректного применения назначенных политик ПО на доменном компьютере, необходимо добавить информацию о репозитории в Source list компьютера.

Применение политик по умолчанию
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Применение политик ПО запускается при старте standalone minion. Пользователю доступна проверка текущего статуса работы standalone миньона:

.. code-block:: bash

   Заменить на systemctl status aldpro-salt-minion.service

После старта standalone minion, начинается таймер применения Политики ПО. Просмотр таймера:

.. code-block:: 

   aldpro-salt-call schedule.show_next_fire_time build_and_run_swp

Система показывает примерное время, равное постоянному таймеру. Программное обеспечение установится в течение ещё 5-50 минут от указанного.

Форсированное применение ПО
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Пользователь может выполнить принудительное обновление pillar и применение политик командой:

.. code-block:: 

   aldpro-salt-call state.apply gpupdate.swp pillar='{"verbose": True, "force": True}'

Флаг pillar='{“verbose”: True}' нужен для получения логов выполнения заданий применения. Флаг pillar='{“force”: True}' используется для принудительного удаления сохранённых ранее pillar. Использовать флаг force: True рекомендуется не чаще одного раза в 10 минут, поскольку это приводит к повышенной нагрузке на контроллер домена.

Команда обновления pillar в обычном порядке и последующее выполнение политики:

.. code-block:: 

   aldpro-salt-call state.apply gpupdate.build

Ранее из интерфейса была возможность принудительно установить ПО на доменном компьютере. Теперь этот функционал из портала управления недоступен. Для принудительной установки воспользуйтесь командой на доменном компьютере:

.. code-block:: 

   aldpro-salt-call state.apply policies.sw-policies

Редактирование времени выполнения заданий
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Таймер заданий для групповых политик, политик ПО и правил аудита состоит из двух частей:

- Постоянная часть таймера в 25 минут. Минимальное время между заданиями 30 минут.

- Случайный разброс от 5 до 50 минут. Добавляется к постоянному таймеру, для снижения пиковой нагрузки на контроллер домена.

Таким образом, гарантированное время выполнение каждого задания 80 минут.

На доменном компьютере пользователь может установить собственные значения таймера в расписании, для внесения изменений нужно обладать sudo правами. В файле ``/srv/aldpro-salt/config/minion.d/standalone_scheduler.conf`` измените значения атрибутов ``build_and_run_swp``:

- minutes - постоянный таймер;

- splay: \* start - минимальное значение случайного таймера; \* end - максимальное значение случайного таймера.

Выставлять значения таймера менее 10 минут нежелательно, это может привести к повышенной нагрузке и на контроллер домена, и на компьютер.

Далее в файле ``/srv/aldpro-salt/roots/_modules/utils.py`` на доменном компьютере внесите изменения в строчке \_25_MINUTES = dt.timedelta(minutes=25), поменяв значение 25. После внесения изменений перезапустите standalone minion:

.. code-block:: bash

   systemctl restart aldpro-salt-minion.service

.. _ref_checking_policy_result:

Просмотр результатов применения политики
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Кроме моделирования результатов применения политики ПО непосредственно на компьютере, результат применения возможно увидеть в портале ALD Pro. Для просмотра назначенных политик ПО на
компьютер или подразделение следует:

1. Перейти: **Пользователи и компьютеры → Компьютеры → {Имя компьютера} → Вкладка “Назначение ПО”**

Во вкладке отображается ПО, которое назначено на компьютер политиками ПО (см. :ref:`u+c_assigning_policy`). Вкладка содержит следующие разделы:

.. list-table:: Назначенное на компьютер ПО
   :widths: 20 20 20 20 20
   :header-rows: 1
   :class: longtable

   * - Наименование ПО
     - Статус установки
     - Имя параметра
     - Значение параметра
     - Переопределено на хосте
   * - Наименование ПО, которое содержится в назначенной на компьютер политике ПО. Задаётся в каталоге ПО, для просмотра перейти: Установка и обновление ПО → Каталог ПО.
     - Статус установки данного ПО на компьютере. Предусмотрено 4 значения: Успешно - Если ПО установилось успешно; Ошибка установки - Если при установке ПО возникли ошибки; Переопределено - Если есть аналогичное ПО из другой политики ниже приоритетом; Ожидает установки - ПО назначено, но не установлено.
     - ПО задаётся с определенными параметрами. Например, для браузеров параметр это часто "Стартовая страница", который задаёт первую страницу по умолчанию при открытии браузера.
     - Так как ПО задаётся с определенными параметрами, то для них определяются свои значения. В случае, например, параметра "Стартовая страница", его значение может быть "www.aldpro.ru".
     - Применяется для случаев изменения значения параметра. Если для данного ПО по итогу изменился параметр, "Переопределено на хосте" будет отображаться как "Да".

2. Перейти: **Пользователи и компьютеры → Подразделения → {Имя подразделения} → Политики ПО**. Во вкладке отображаются политики ПО, назначенные на подразделение. Вкладка содержит следующие разделы:

.. list-table:: Назначенное на подразделение ПО
   :widths: 40 60
   :header-rows: 1
   :class: longtable

   * - Имя политики
     - Приоритет политики
   * - Имя политики ПО. Задаётся при создании (см. :ref:`swiu_policy_creating`).
     - Приоритет назначенной политики. В рамках подразделения приоритет уникален. Задаётся при создании политики ПО.
